package com.zmh.service.wechat;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zmh.common.DateUtil;
import com.zmh.dao.MessageInfoDao;
import com.zmh.model.wechat.httpClient.MessageInfo;
import com.zmh.service.mail.SendMailService;

/** 
 * @author zhoumh
 * @version 创建时间：2017年11月14日 上午10:16:16 
 * @Description 
*/
@Service
public class MessageInfoService {
	private static Logger logger = LoggerFactory.getLogger(MessageInfoService.class);
	@Autowired
	private MessageInfoDao messageInfoDao;
	@Autowired
	private SendMailService sendMailService;
	
	/**
	 * 获取待发送消息通过邮件发送
	 * @return: void
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月22日 下午3:28:43 
	 * @Description:
	 */
	public void sendMessageByEmail() {
		// 获取状态为待发送，且时间是当前时间之前的未发送消息列表
		List<MessageInfo> messageInfos = messageInfoDao.selMsgByST("0",DateUtil.getDateTime(),0,10);
		logger.info("获取待发送消息列表，共计： "+messageInfos.size());
		// 待发送消息为0 停止调用，直接返回
		if (messageInfos.size() == 0) {
			return;
		}
		String subject = "";
		String content = "";
		// 遍历待发送消息列表进行发送
		for (MessageInfo messageInfo : messageInfos) {
			sendMailService.sendMail(messageInfo.getContent().substring(0, messageInfo.getContent().indexOf("链接")), messageInfo.getContent());
			logger.info(DateUtil.getDateTimes()+" 邮件发送成功 "+messageInfo.getContent());
			//修改发送状态为成功
			messageInfo.setStatus("1");
			if(messageInfoDao.updMsgByUuid(messageInfo)!=1){
				logger.error("消息状态变更失败！ "+messageInfo.getContent());
			}
		}
	}
	/**
	 * 封装消息增加服务
	 * @param messageInfo
	 * @return: boolean true 消息保存成功 false  消息保存失败
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月14日 上午10:19:34 
	 * @Description:
	 */
	public boolean insMsg(MessageInfo messageInfo){
		boolean result = false;
		int rs = messageInfoDao.insMsg(messageInfo);
		if (rs == 1) {
			result = true;
			logger.info("消息保存成功："+messageInfo.getContent());
		}else{
			logger.error("消息保存失败，"+messageInfo.getContent());
		}
		return result;
	}
	/**
	 * 根据备注信息查询消息条数
	 * @param description 备注信息
	 * @return: int 总条数
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月14日 下午3:28:51 
	 * @Description:
	 */
	public int sumMsgByDesc(String description,String status){
		return messageInfoDao.sumMsgByDesc(description,status);
	}
	/**
	 * 根据类型和状态删除消息
	 * @param status 消息状态，发送/未发送
	 * @param type 消息类型 书籍/工作/微信最后一条
	 * @return: int 删除成功的条数
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月14日 下午4:34:32 
	 * @Description:
	 */
	public int delMsgByType(String type,String status){
		return messageInfoDao.delMsgByType(type, status);
	}
}
